/* eslint-disable regexp/no-unused-capturing-group */
/**
 * el form 验证手机号规则 /^(((\d{3,4}-)?[0-9]{7,8})|(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-9]|18[0-9]|19[0-35-9])\d{8})$/
  ^ 和 $：表示正则表达式的开始和结束。
  (...)：表示分组，将表达式中的一部分作为一个整体进行处理。
  |：表示逻辑或，可以匹配两个分组中的任意一个。
  \d{3,4}：匹配3到4个数字，即电话号码中的区号。
  -：匹配一个连字符。
  [0-9]{7,8}：匹配7到8个数字，即电话号码的主体部分。
  13[0-9]：匹配以13开头的手机号码。
  14[01456879]：匹配以14开头后面跟着0、1、4、5、6、8、9的手机号码。
  15[0-35-9]：匹配以15开头后面跟着0、1、3-9的手机号码。
  16[2567]：匹配以16开头后面跟着2、5、6、7的手机号码。
  17[0-9]：匹配以17开头后面跟着0-9的手机号码。
  18[0-9]：匹配以18开头后面跟着0-9的手机号码。
  19[0-35-9]：匹配以19开头后面跟着0、1、3-9的手机号码。
  \d{8}：匹配8个数字，即手机号码的主体部分。
  整个正则表达式的目的是匹配符合中国大陆手机号码和固定电话号码规则的字符串，可以用于验证电话号码输入的合法性。
 */
export function elValidatorPhoneRequired(rule: any, value: any, callback: any) {
  const phoneRegex
    = /^(((\d{3,4}-)?\d{7,8})|(13\d|14[014-9]|15[0-35-9]|16[2567]|17\d|18\d|19[0-35-9])\d{8})$/
  if (phoneRegex.test(value)) {
    callback()
  }
  else {
    callback(
      new Error(
        '请输入有效的手机号或固定电话（区号和电话号码中间使用“-”连接）',
      ),
    )
  }
}
/**
 * 验证手机号规则 /^(((\d{3,4}-)?[0-9]{7,8})|(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-9]|18[0-9]|19[0-35-9])\d{8})$/
  ^ 和 $：表示正则表达式的开始和结束。
  (...)：表示分组，将表达式中的一部分作为一个整体进行处理。
  |：表示逻辑或，可以匹配两个分组中的任意一个。
  \d{3,4}：匹配3到4个数字，即电话号码中的区号。
  -：匹配一个连字符。
  [0-9]{7,8}：匹配7到8个数字，即电话号码的主体部分。
  13[0-9]：匹配以13开头的手机号码。
  14[01456879]：匹配以14开头后面跟着0、1、4、5、6、8、9的手机号码。
  15[0-35-9]：匹配以15开头后面跟着0、1、3-9的手机号码。
  16[2567]：匹配以16开头后面跟着2、5、6、7的手机号码。
  17[0-9]：匹配以17开头后面跟着0-9的手机号码。
  18[0-9]：匹配以18开头后面跟着0-9的手机号码。
  19[0-35-9]：匹配以19开头后面跟着0、1、3-9的手机号码。
  \d{8}：匹配8个数字，即手机号码的主体部分。
  整个正则表达式的目的是匹配符合中国大陆手机号码和固定电话号码规则的字符串，可以用于验证电话号码输入的合法性。
 */
export function validatorPhone(text: string) {
  const phoneRegex
    = /^(((\d{3,4}-)?\d{7,8})|(13\d|14[014-9]|15[0-35-9]|16[2567]|17\d|18\d|19[0-35-9])\d{8})$/

  return phoneRegex.test(text)
}
